package cn.edu.ecnu.gis.client.gadgets;

import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.VerticalPanel;
import cn.edu.ecnu.gis.client.model.Gadget;
import cn.edu.ecnu.gis.client.model.GadgetClass;
import cn.edu.ecnu.gis.client.model.UserPref;
import cn.edu.ecnu.gis.client.ltapi.localsearch.LTLocalSearchRequest;
import cn.edu.ecnu.gis.client.ltapi.localsearch.LTLocalSearchRequestHandle;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.ImageBundle;


public class LTSearchGadget extends Gadget implements LTLocalSearchRequestHandle{
	
	public static class Class extends GadgetClass {
		public static UserPref feed = new UserPref( "Feed","http://feeds.feedburner.com/Techcrunch");
		public Class(){
			super("ltsearch", true);
                        this.setGadgetType(1);
			addUserPref(feed);
		}
		public Gadget newGadget(){
			return new LTSearchGadget(this);
		}
	}
	
	private VerticalPanel list = new VerticalPanel();
	protected LTSearchGadget( Class c)	{
		super(c);
		initWidget( list );
		setStyleName( "News" );
	}
	
	public void refresh(){
		list.clear();
		String url = (String) getUserPrefValue( Class.feed );
		LTLocalSearchRequest.search( "中山北路3663号", "上海",this );
	}
	
	public void onRequestComplete( String result ){
		JSONObject searchResult = (JSONObject) JSONParser.parse( result );
		//JSONArray entries = (JSONArray) searchResult.get("entries");
                JSONArray searchPoints = (JSONArray) searchResult.get("searchPoints");
               
		for(int i=0;i<searchPoints.size();i++ ){
			JSONObject item = (JSONObject)searchPoints.get(i);
			JSONString id = (JSONString) item.get("id");
			JSONString url = (JSONString) item.get("url");
                        JSONString name=(JSONString) item.get("name");
                        JSONArray points=(JSONArray)item.get("point");    
			HTML html = new HTML("<a href='"+url.stringValue()+"' target='_blank'>"+name.stringValue()+"</a>");
			html.setStyleName( "News-Item" );
			list.add( html );
		}
	}
	
	public void onRequestFailed( String error ){
		list.add( new HTML(error) );
	}
        public interface BoundImage extends ImageBundle {

        AbstractImagePrototype inbox();
    }

   
    public AbstractImagePrototype getBoundImage() {
        BoundImage images = (BoundImage) GWT.create(BoundImage.class);
        return images.inbox();
    }
}
